//
// AWS Manager - A free AWS console application demonstrating advanced concepts
// Copyright (C) 2008-2010 Sean O'Dell. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
/*
 * UserAlert.java
 *
 * Created on Jul 9, 2008, 12:08:37 PM
 */
package awsmanager;

import com.awsmanager.common.EC2Instance;
import com.awsmanager.common.S3StorageBucket;
import com.awsmanager.common.EBSVolume;
import com.awsmanager.common.EC2SecurityGroupDataProvider;
import com.awsmanager.common.S3StorageConnection;
import com.sun.data.provider.RowKey;
import com.sun.rave.web.ui.appbase.AbstractPageBean;
import com.sun.webui.jsf.component.Checkbox;
import com.sun.webui.jsf.component.PageAlert;
import com.sun.webui.jsf.component.PanelGroup;
import com.sun.webui.jsf.component.TabSet;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.faces.FacesException;
import javax.faces.component.html.HtmlInputTextarea;

/**
 * <p>Page bean that corresponds to a similarly named JSP page.  This
 * class contains component definitions (and initialization code) for
 * all components that you have defined on this page, as well as
 * lifecycle methods and event handlers where you may add behavior
 * to respond to incoming events.</p>
 *
 * @author Sean ODell
 */
public class UserAlert extends AbstractPageBean {
    // <editor-fold defaultstate="collapsed" desc="Managed Component Definition">

    /**
     * <p>Automatically managed component initialization.  <strong>WARNING:</strong>
     * This method is automatically generated, so any user-specified code inserted
     * here is subject to being replaced.</p>
     */
    private void _init() throws Exception {
    }
    private PanelGroup groupPanel1 = new PanelGroup();

    public PanelGroup getGroupPanel1() {
        return groupPanel1;
    }

    public void setGroupPanel1(PanelGroup pg) {
        this.groupPanel1 = pg;
    }
    private HtmlInputTextarea ta_PageAlert = new HtmlInputTextarea();

    public HtmlInputTextarea getTa_PageAlert() {
        return ta_PageAlert;
    }

    public void setTa_PageAlert(HtmlInputTextarea hit) {
        this.ta_PageAlert = hit;
    }
    private Checkbox cb_CloneMetadataFromVol = new Checkbox();

    public Checkbox getCb_CloneMetadataFromVol() {
        return cb_CloneMetadataFromVol;
    }

    public void setCb_CloneMetadataFromVol(Checkbox c) {
        this.cb_CloneMetadataFromVol = c;
    }
    private Checkbox cb_CloneMetadataFromSnap = new Checkbox();

    public Checkbox getCb_CloneMetadataFromSnap() {
        return cb_CloneMetadataFromSnap;
    }

    public void setCb_CloneMetadataFromSnap(Checkbox c) {
        this.cb_CloneMetadataFromSnap = c;
    }

    // </editor-fold>
    /**
     * <p>Construct a new Page bean instance.</p>
     */
    public UserAlert() {
    }

    /**
     * <p>Callback method that is called whenever a page is navigated to,
     * either directly via a URL, or indirectly via page navigation.
     * Customize this method to acquire resources that will be needed
     * for event handlers and lifecycle methods, whether or not this
     * page is performing post back processing.</p>
     * 
     * <p>Note that, if the current request is a postback, the property
     * values of the components do <strong>not</strong> represent any
     * values submitted with this request.  Instead, they represent the
     * property values that were saved for this view when it was rendered.</p>
     */
    @Override
    public void init() {
        // Perform initializations inherited from our superclass
        super.init();
        // Perform application initialization that must complete
        // *before* managed components are initialized
        // TODO - add your own initialiation code here

        // <editor-fold defaultstate="collapsed" desc="Managed Component Initialization">
        // Initialize automatically managed components
        // *Note* - this logic should NOT be modified
        try {
            _init();
        } catch (Exception e) {
            log("UserAlert Initialization Failure", e);
            throw e instanceof FacesException ? (FacesException) e : new FacesException(e);
        }

        // </editor-fold>
        // Perform application initialization that must complete
        // *after* managed components are initialized
        // TODO - add your own initialization code here

        // set the text in the tet area from message created in AWSMain
        ta_PageAlert.setValue(getSessionBean1().getPageAlertDetailMessage());
        ta_PageAlert.setReadonly(true);

    }

    /**
     * <p>Callback method that is called after the component tree has been
     * restored, but before any event processing takes place.  This method
     * will <strong>only</strong> be called on a postback request that
     * is processing a form submit.  Customize this method to allocate
     * resources that will be required in your event handlers.</p>
     */
    @Override
    public void preprocess() {
    }

    /**
     * <p>Callback method that is called just before rendering takes place.
     * This method will <strong>only</strong> be called for the page that
     * will actually be rendered (and not, for example, on a page that
     * handled a postback and then navigated to a different page).  Customize
     * this method to allocate resources that will be required for rendering
     * this page.</p>
     */
    @Override
    public void prerender() {
    }

    /**
     * <p>Callback method that is called after rendering is completed for
     * this request, if <code>init()</code> was called (regardless of whether
     * or not this was the page that was actually rendered).  Customize this
     * method to release resources acquired in the <code>init()</code>,
     * <code>preprocess()</code>, or <code>prerender()</code> methods (or
     * acquired during execution of an event handler).</p>
     */
    @Override
    public void destroy() {
    }

    /**
     * <p>Return a reference to the scoped data bean.</p>
     *
     * @return reference to the scoped data bean
     */
    protected SessionBean1 getSessionBean1() {
        return (SessionBean1) getBean("SessionBean1");
    }

    /**
     * <p>Return a reference to the scoped data bean.</p>
     *
     * @return reference to the scoped data bean
     */
    protected RequestBean1 getRequestBean1() {
        return (RequestBean1) getBean("RequestBean1");
    }

    /**
     * <p>Return a reference to the scoped data bean.</p>
     *
     * @return reference to the scoped data bean
     */
    protected ApplicationBean1 getApplicationBean1() {
        return (ApplicationBean1) getBean("ApplicationBean1");
    }

    /**
     * -----------------------------------------------------------------------
     */
    public String cancelToMainBtn_action() {
        // TODO: Process the action. Return value is a navigation
        // case name where null will return to the same page.
        getSessionBean1().setUserVisibleCloneMetadataFromSnap(false);
        getSessionBean1().setUserVisibleCloneMetadataFromVol(false);
        return "cancelToMain";
    }

    public String continueBtn_action() {
        // TODO: Process the action. Return value is a navigation
        // case name where null will return to the same page.
        PageAlert pa = getSessionBean1().getUserPageAlert();
        TabSet tabSet = getSessionBean1().getCurrentTabSet();
        String type = getSessionBean1().getPageAlertAWSActionType();
        String statusMsg = new String();

        Map cloneMetadata = null;
        cloneMetadata = getSessionBean1().getCloneMetaData();
        cloneMetadata.put("cloneVol", cb_CloneMetadataFromVol.isChecked());
        cloneMetadata.put("cloneSnap", cb_CloneMetadataFromSnap.isChecked());
        getSessionBean1().setCloneMetaData(cloneMetadata);

        /*Note that type error should never occur since the
         *continue button does not render when type is set to error.*/

        if (type != null) {

            if (type.equals("launchInstances")) {

                Map launchInstanceInfo = getSessionBean1().getLaunchInstInfo();

                try {
                    statusMsg = getSessionBean1().getEC2ImageDataProvider().launchInstances(launchInstanceInfo);
                    getSessionBean1().getEC2InstanceDataProvider().load(getSessionBean1().getEc2Connection(),
                            getSessionBean1().getSdbConnection());
                    getSessionBean1().setImageIDsOptions(
                            getSessionBean1().ec2InstanceDataProvider.getImageIDsOptions());
                } catch (Exception e) {
                    e.printStackTrace();
                    statusMsg = statusMsg + "  Error: " + e.getMessage() + "\n";
                }

                getSessionBean1().setUserMessage("Launch instances command results.");
                getSessionBean1().setUserMessageDetail(statusMsg);

                tabSet.setSelected("EC2_Images");
                getSessionBean1().setCurrentTabSet(tabSet);

            } else if (type.equals("deregAMIs")) {

                RowKey[] selectedRowKeys = getSessionBean1().getSelectedRowKeys();

                try {
                    statusMsg = getSessionBean1().getEC2ImageDataProvider().deregAMIs(selectedRowKeys);
                    getSessionBean1().getEC2ImageDataProvider().load(getSessionBean1().getEc2Connection(),
                            getSessionBean1().getAWSProps());
                } catch (Exception e) {
                    e.printStackTrace();
                }

                getSessionBean1().setUserMessage("De-register AMIs command results.");
                getSessionBean1().setUserMessageDetail(statusMsg);

                tabSet.setSelected("EC2_Images");
                getSessionBean1().setCurrentTabSet(tabSet);

            } else if (type.equals("rebootInstance")) {

                List<RowKey> instanceRowKeys = new ArrayList<RowKey>();
                Map rebootInstanceInfo = new HashMap();

                RowKey[] selectedRowKeys = getSessionBean1().getSelectedRowKeys();

                for (int i = 0; i < selectedRowKeys.length; i++) {
                    String rowId = selectedRowKeys[i].getRowId();
                    RowKey rowKey = getSessionBean1().getEC2InstanceDataProvider().getRowKey(rowId);
                    instanceRowKeys.add(rowKey);
                }

                rebootInstanceInfo.put("instRowKeys", instanceRowKeys);

                try {
                    statusMsg = getSessionBean1().getEC2InstanceDataProvider().rebootInstance(rebootInstanceInfo);
                    getSessionBean1().getEC2InstanceDataProvider().load(getSessionBean1().getEc2Connection(),
                            getSessionBean1().getSdbConnection());
                    getSessionBean1().setImageIDsOptions(
                            getSessionBean1().ec2InstanceDataProvider.getImageIDsOptions());
                } catch (Exception e) {
                    e.printStackTrace();
                }

                getSessionBean1().setUserMessage("Reboot instances command results.");
                getSessionBean1().setUserMessageDetail(statusMsg);

                tabSet.setSelected("EC2_Instances");
                getSessionBean1().setCurrentTabSet(tabSet);

            } else if (type.equals("terminateInstance")) {

                List<RowKey> instanceRowKeys = new ArrayList<RowKey>();
                Map terminateInstanceInfo = new HashMap();

                RowKey[] selectedRowKeys = getSessionBean1().getSelectedRowKeys();

                for (int i = 0; i < selectedRowKeys.length; i++) {
                    String rowId = selectedRowKeys[i].getRowId();
                    RowKey rowKey = getSessionBean1().getEC2InstanceDataProvider().getRowKey(rowId);
                    EC2Instance ec2Instance = getSessionBean1().getEC2InstanceDataProvider().getInstance(rowKey);
                    if ((ec2Instance.getstateName().equals("running")) || (ec2Instance.getstateName().equals("pending"))) {
                        instanceRowKeys.add(rowKey);
                    }
                }

                terminateInstanceInfo.put("instRowKeys", instanceRowKeys);

                statusMsg = getSessionBean1().getEC2InstanceDataProvider().deleteInstance(terminateInstanceInfo);
                getSessionBean1().getEC2InstanceDataProvider().load(getSessionBean1().getEc2Connection(),
                        getSessionBean1().getSdbConnection());
                getSessionBean1().setImageIDsOptions(
                        getSessionBean1().ec2InstanceDataProvider.getImageIDsOptions());

                getSessionBean1().setUserMessage("Terminate instances command results.");
                getSessionBean1().setUserMessageDetail(statusMsg);
                tabSet.setSelected("EC2_Instances");
                getSessionBean1().setCurrentTabSet(tabSet);

            } else if (type.equals("sshConnect")) {

                getSessionBean1().setUserMessage("Connection to Instance created.");
                tabSet.setSelected("EC2_Instances");
                getSessionBean1().setCurrentTabSet(tabSet);

            } else if (type.equals("getConsoleOutput")) {

                String consoleOutputStr = new String();
                List<String> ids = new ArrayList<String>();
                RowKey[] selectedRowKeys = getSessionBean1().getSelectedRowKeys();

                List<RowKey> instanceRowKeys = new ArrayList<RowKey>();
                Map getConsoleInstanceInfo = new HashMap();

                for (int i = 0; i < selectedRowKeys.length; i++) {
                    String rowId = selectedRowKeys[i].getRowId();
                    RowKey rowKey = getSessionBean1().getEC2InstanceDataProvider().getRowKey(rowId);
                    instanceRowKeys.add(rowKey);
                }

                getConsoleInstanceInfo.put("instRowKeys", instanceRowKeys);

                try {
                    consoleOutputStr = getSessionBean1().getEC2InstanceDataProvider().getConsoleOutput(getConsoleInstanceInfo);
                } catch (Exception e) {
                    e.printStackTrace();
                }

                getSessionBean1().setUserMessage("Retrieve console output command results.");
                getSessionBean1().setUserMessageDetail(consoleOutputStr);
                tabSet.setSelected("EC2_Instances");
                getSessionBean1().setCurrentTabSet(tabSet);

            } else if (type.equals("createVolume")) {

                Map createVolInfo = getSessionBean1().getCreateVolInfo();

                try {
                    statusMsg = getSessionBean1().getEBSVolumeDataProvider().createVolume(createVolInfo);
                    getSessionBean1().getEBSVolumeDataProvider().load(getSessionBean1().getEc2Connection(),
                            getSessionBean1().getSdbConnection());

                } catch (Exception e) {
                    e.printStackTrace();
                }

                getSessionBean1().setUserMessage("Create volumes command results.");
                getSessionBean1().setUserMessageDetail(statusMsg);

                tabSet.setSelected("EBS_Volumes");
                getSessionBean1().setCurrentTabSet(tabSet);

            } else if (type.equals("terminateVolume")) {

                List<String> ids = new ArrayList<String>();
                List<RowKey> availableRowKeys = new ArrayList<RowKey>();

                RowKey[] selectedRowKeys = getSessionBean1().getSelectedRowKeys();

                for (int i = 0; i < selectedRowKeys.length; i++) {
                    String rowId = selectedRowKeys[i].getRowId();
                    RowKey rowKey = getSessionBean1().getEBSVolumeDataProvider().getRowKey(rowId);
                    EBSVolume ebsVolume = getSessionBean1().getEBSVolumeDataProvider().getVolume(rowKey);
                    if (ebsVolume.getvstatus().equals("available")) {
                        ids.add(ebsVolume.getvolumeId());
                        availableRowKeys.add(rowKey);
                    }
                }

                try {
                    statusMsg = getSessionBean1().getEBSVolumeDataProvider().deleteVolume(availableRowKeys);
                    getSessionBean1().getEBSVolumeDataProvider().load(getSessionBean1().getEc2Connection(),
                            getSessionBean1().getSdbConnection());

                } catch (Exception e) {
                    e.printStackTrace();
                }

                getSessionBean1().setUserMessage("Terminate volumes command results.");
                getSessionBean1().setUserMessageDetail(statusMsg);

                tabSet.setSelected("EBS_Volumes");
                getSessionBean1().setCurrentTabSet(tabSet);

            } else if (type.equals("createSnapshot")) {

                List<RowKey> volumeRowKeys = new ArrayList<RowKey>();
                Map createSnapsInfo = new HashMap();
                RowKey[] selectedRowKeys = getSessionBean1().getSelectedRowKeys();

                for (int i = 0; i < selectedRowKeys.length; i++) {
                    String rowId = selectedRowKeys[i].getRowId();
                    RowKey rowKey = getSessionBean1().getEBSVolumeDataProvider().getRowKey(rowId);
                    volumeRowKeys.add(rowKey);
                }

                createSnapsInfo.put("volRowKeys", volumeRowKeys);
                createSnapsInfo.put("volDataProvider", getSessionBean1().getEBSVolumeDataProvider());

                try {
                    statusMsg = getSessionBean1().getEBSSnapshotDataProvider().createSnapshot(createSnapsInfo, cloneMetadata);
                    getSessionBean1().getEBSSnapshotDataProvider().load(getSessionBean1().ec2Connection,
                            getSessionBean1().getSdbConnection());
                } catch (Exception e) {
                    e.printStackTrace();
                }

                getSessionBean1().setUserMessage("Create snapshots command results.");
                getSessionBean1().setUserMessageDetail(statusMsg);

                tabSet.setSelected("EBS_Volumes");
                getSessionBean1().setCurrentTabSet(tabSet);
                getSessionBean1().setUserVisibleCloneMetadataFromVol(false);

            } else if (type.equals("attachVolumes")) {

                Map attachVolInfo = getSessionBean1().getAttachVolInfo();

                try {
                    statusMsg = getSessionBean1().getEBSVolumeDataProvider().attachVolumes(attachVolInfo);
                    getSessionBean1().getEBSVolumeDataProvider().load(getSessionBean1().getEc2Connection(),
                            getSessionBean1().getSdbConnection());

                } catch (Exception e) {
                    e.printStackTrace();
                }

                getSessionBean1().setUserMessage("Attach volumes command results.");
                getSessionBean1().setUserMessageDetail(statusMsg);

                tabSet.setSelected("EBS_Volumes");
                getSessionBean1().setCurrentTabSet(tabSet);

            } else if (type.equals("detachVolume")) {

                Map detachVolInfo = getSessionBean1().getDetachVolInfo();

                try {
                    statusMsg = getSessionBean1().getEBSVolumeDataProvider().detachVolume(detachVolInfo);
                    getSessionBean1().getEBSVolumeDataProvider().load(getSessionBean1().getEc2Connection(),
                            getSessionBean1().getSdbConnection());

                } catch (Exception e) {
                    e.printStackTrace();
                }

                getSessionBean1().setUserMessage("Detach volumes command results.");
                getSessionBean1().setUserMessageDetail(statusMsg);

                tabSet.setSelected("EBS_Volumes");
                getSessionBean1().setCurrentTabSet(tabSet);

            } else if (type.equals("createVolsFromSnaps")) {

                Map createVolsFromSnapsInfo = new HashMap(getSessionBean1().getCreateVolsFromSnapsInfo());

                try {
                    statusMsg = getSessionBean1().getEBSSnapshotDataProvider().createVolsFromSnaps(createVolsFromSnapsInfo, cloneMetadata);
                    getSessionBean1().getEBSVolumeDataProvider().load(getSessionBean1().getEc2Connection(),
                            getSessionBean1().getSdbConnection());

                } catch (Exception e) {
                    e.printStackTrace();
                }

                getSessionBean1().setUserMessage("Create volumes from snapshots command results.");
                getSessionBean1().setUserMessageDetail(statusMsg);

                tabSet.setSelected("EBS_Snapshots");
                getSessionBean1().setCurrentTabSet(tabSet);
                getSessionBean1().setUserVisibleCloneMetadataFromSnap(false);

            } else if (type.equals("terminateSnapshot")) {

                RowKey[] selectedRowKeys = getSessionBean1().getSelectedRowKeys();
                List<RowKey> snapshotRowKeys = new ArrayList<RowKey>();
                Map deleteSnapsInfo = new HashMap();

                for (int i = 0; i < selectedRowKeys.length; i++) {
                    String rowId = selectedRowKeys[i].getRowId();
                    RowKey rowKey = getSessionBean1().getEBSSnapshotDataProvider().getRowKey(rowId);
                    snapshotRowKeys.add(rowKey);
                }

                deleteSnapsInfo.put("snapRowKeys", snapshotRowKeys);

                try {
                    statusMsg = getSessionBean1().getEBSSnapshotDataProvider().deleteSnapshot(deleteSnapsInfo);
                    getSessionBean1().getEBSSnapshotDataProvider().load(getSessionBean1().ec2Connection,
                            getSessionBean1().getSdbConnection());

                } catch (Exception e) {
                    e.printStackTrace();
                }

                getSessionBean1().setUserMessage("Terminate snapshots command results.");
                getSessionBean1().setUserMessageDetail(statusMsg);

                tabSet.setSelected("EBS_Snapshots");
                getSessionBean1().setCurrentTabSet(tabSet);

            } else if (type.equals("s3BucketDelete")) {

                List<String> ids = new ArrayList<String>();
                RowKey[] selectedRowKeys = getSessionBean1().getSelectedRowKeys();

                for (int i = 0; i < selectedRowKeys.length; i++) {
                    String rowId = selectedRowKeys[i].getRowId();
                    RowKey rowKey = getSessionBean1().getS3StorageBucketDataProvider().getRowKey(rowId);
                    S3StorageBucket s3StorageBucket = getSessionBean1().getS3StorageBucketDataProvider().getS3StorageBucket(rowKey);
                    ids.add(s3StorageBucket.getname());
                }

                try {
                    statusMsg = getSessionBean1().getS3StorageBucketDataProvider().deleteS3StorageBuckets(ids);
                    S3StorageConnection s3StorageConnection = getSessionBean1().getS3StorageConnection();
                    getSessionBean1().getS3StorageBucketDataProvider().load(getSessionBean1().getAWSProps(), s3StorageConnection);

                } catch (Exception e) {
                    e.printStackTrace();
                }

                getSessionBean1().setUserMessage("Delete buckets command results.");
                getSessionBean1().setUserMessageDetail(statusMsg);

                tabSet.setSelected("S3_Storage");
                getSessionBean1().setCurrentTabSet(tabSet);

            } else if (type.equals("releaseEC2IPs")) {

                RowKey[] selectedRowKeys = getSessionBean1().getSelectedRowKeys();

                try {
                    statusMsg = getSessionBean1().ec2IPDataProvider.releaseEC2IPs(selectedRowKeys);
                    getSessionBean1().getEc2IPDataProvider().load(getSessionBean1().getEc2Connection(),
                            getSessionBean1().getSdbConnection(),
                            getSessionBean1().getEC2InstanceDataProvider());
                } catch (Exception e) {
                    e.printStackTrace();
                }

                getSessionBean1().setUserMessage("Release Elastic IPs command results.");
                getSessionBean1().setUserMessageDetail(statusMsg);

                tabSet.setSelected("EC2_IPs");
                getSessionBean1().setCurrentTabSet(tabSet);

            } else if (type.equals("disassociateEC2IPs")) {

                RowKey[] selectedRowKeys = getSessionBean1().getSelectedRowKeys();

                try {
                    statusMsg = getSessionBean1().ec2IPDataProvider.disassociateEC2IPs(selectedRowKeys);
                    getSessionBean1().getEc2IPDataProvider().load(getSessionBean1().getEc2Connection(),
                            getSessionBean1().getSdbConnection(),
                            getSessionBean1().getEC2InstanceDataProvider());
                } catch (Exception e) {
                    e.printStackTrace();
                }

                getSessionBean1().setUserMessage("Disassociate Elastic IPs command results.");
                getSessionBean1().setUserMessageDetail(statusMsg);

                tabSet.setSelected("EC2_IPs");
                getSessionBean1().setCurrentTabSet(tabSet);

            } else if (type.equals("revokeIpPermission")) {

                RowKey[] selectedRowKeys = getSessionBean1().getSelectedRowKeys();

                try {
                    statusMsg = getSessionBean1().getEc2IpPermissionDataProvider().revokeIpPermissionExternal(
                            getSessionBean1().getEc2Connection(), selectedRowKeys);

                    getSessionBean1().getEc2SecurityGroupDataProvider().load(getSessionBean1().getEc2Connection());

                    EC2SecurityGroupDataProvider ec2SecurityGroupDataProvider =
                            getSessionBean1().getEc2SecurityGroupDataProvider();

                    Map ec2SecurityGroupsInfo = getSessionBean1().getEc2SecurityGroupsInfo();

                    getSessionBean1().getEc2IpPermissionDataProvider().load(ec2SecurityGroupsInfo,
                            ec2SecurityGroupDataProvider);

                } catch (Exception e) {
                    e.printStackTrace();
                }

                getSessionBean1().setUserMessage("Revoke IP Permissions command results.");
                getSessionBean1().setUserMessageDetail(statusMsg);

            } else if (type.equals("revokeLaunchPermission")) {

                RowKey[] selectedRowKeys = getSessionBean1().getSelectedRowKeys();

                try {
                    statusMsg = getSessionBean1().getEc2AMILaunchPermissionDataProvider().revokeLaunchPermission(
                            getSessionBean1().getEc2Connection(), selectedRowKeys);
                } catch (Exception e) {
                    e.printStackTrace();
                }

                getSessionBean1().setUserMessage("Revoke Launch Permissions command results.");
                getSessionBean1().setUserMessageDetail(statusMsg);

            } else if (type.equals("deleteSecurityGroups")) {

                RowKey[] selectedRowKeys = getSessionBean1().getSelectedRowKeys();

                try {
                    statusMsg = getSessionBean1().getEc2SecurityGroupDataProvider().deleteSecurityGroups(selectedRowKeys);

                    getSessionBean1().getEc2SecurityGroupDataProvider().load(getSessionBean1().getEc2Connection());
                    getSessionBean1().setSecurityGroupsOptions(
                            getSessionBean1().getEc2SecurityGroupDataProvider().getSecurityGroupsOptions());

                } catch (Exception e) {
                    e.printStackTrace();
                }

                getSessionBean1().setUserMessage("Delete Security Groups command results.");
                getSessionBean1().setUserMessageDetail(statusMsg);

                tabSet.setSelected("EC2_SecurityGroups");
                getSessionBean1().setCurrentTabSet(tabSet);

            } else if (type.equals("deleteSDBItem")) {

                RowKey[] selectedRowKeys = getSessionBean1().getSelectedRowKeys();

                try {
                    statusMsg = getSessionBean1().getSdbItemDataProvider().deleteSDBItems(selectedRowKeys);
                    getSessionBean1().getSdbItemDataProvider().load(getSessionBean1().getSdbConnection(),
                            getSessionBean1().getDataproviders());
                } catch (Exception e) {
                    e.printStackTrace();
                }

                getSessionBean1().setUserMessage("Delete SDB Items command results.");
                getSessionBean1().setUserMessageDetail(statusMsg);

                tabSet.setSelected("SDB_Items");
                getSessionBean1().setCurrentTabSet(tabSet);

            } else if (type.equals("deleteKeypairs")) {

                RowKey[] selectedRowKeys = getSessionBean1().getSelectedRowKeys();

                try {
                    statusMsg = getSessionBean1().getEc2KeyPairDataProvider().deleteKeypairs(selectedRowKeys);
                    getSessionBean1().getEc2KeyPairDataProvider().load(getSessionBean1().getEc2Connection());
                } catch (Exception e) {
                    e.printStackTrace();
                }

                getSessionBean1().setUserMessage("Delete Keypairs command results.");
                getSessionBean1().setUserMessageDetail(statusMsg);

                tabSet.setSelected("EC2_Keypairs");
                getSessionBean1().setCurrentTabSet(tabSet);

            } else {
                getSessionBean1().setUserMessage("Application Error!");
            }
        }
        return "continue";
    }

    public String connectBtn_action() {
        // TODO: Process the action. Return value is a navigation
        // case name where null will return to the same page.
        return "connectssh";
    }

    public String cancelToSGManageBtn_action() {
        // TODO: Process the action. Return value is a navigation
        // case name where null will return to the same page.
        return "cancelToSGManage";
    }

    public String cancelToLPManageBtn_action() {
        // TODO: Process the action. Return value is a navigation
        // case name where null will return to the same page.
        return "cancelToLPManage";
    }
}